package com.hnhegui.backend.merchant.entity;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hnhegui.backend.merchant.enu.ProductTypeEnum;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 商品实体类
 */
@Data
public class Product {
    /**
     * 商品ID
     */
    private Long productId;

    /**
     * 商品名称
     */
    private String productName;

    /**
     * 商品描述
     */
    private String description;

    /**
     * 价格
     */
    private BigDecimal price;

    /**
     * 库存数量
     */
    private Long stock;

    /**
     * 商品分类
     */
    private String category;

    /**
     * 商品类型
     */
    private ProductTypeEnum productType;

    /**
     * 主图片URL
     */
    private String imageUrl;

    /**
     * 商品图片列表（JSON格式）
     */
    private String images;

    /**
     * 商品属性（JSON格式）
     */
    private String attributes;

    /**
     * 状态：1-在售，0-下架
     */
    private Integer status;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 获取图片列表
     */
    public List<String> getImageList() {
        if (images == null || images.isEmpty()) {
            return List.of();
        }
        try {
            ObjectMapper mapper = new ObjectMapper();
            return mapper.readValue(images, new TypeReference<List<String>>() {});
        } catch (Exception e) {
            return List.of();
        }
    }

    /**
     * 获取商品属性Map
     */
    public Map<String, Object> getAttributeMap() {
        if (attributes == null || attributes.isEmpty()) {
            return Map.of();
        }
        try {
            ObjectMapper mapper = new ObjectMapper();
            return mapper.readValue(attributes, new TypeReference<Map<String, Object>>() {});
        } catch (Exception e) {
            return Map.of();
        }
    }
}
